Useful functions

library(tidyverse)

methods.color <- setNames(scales::hue_pal()(6), 
                          c("logit-simple", "PRS-max", "PRS-stringent",
                            "T-Trees", "logit-triple", "PRS-all")) 
pAUC <- function(pred, target, p = 0.1) {
  val.min <- min(target)
  q <- quantile(pred[target == val.min], probs = 1 - p)
  ind <- (target != val.min) | (pred > q)
  tryCatch(bigstatsr::AUC(pred[ind], target[ind]) * p, 
           error = function(e) p^2 / 2)  # all same prediction
}

format_results <- function(results) {
  results %>%
    as_tibble() %>%
    mutate(
      par.causal = factor(map_chr(par.causal, ~paste(.x[1], .x[2], sep = " in ")),
                          levels = c("30 in HLA", paste(3 * 10^(1:3), "in all"))),
      AUC = map_dbl(eval, ~ bigstatsr::AUC(.x[, 1], .x[, 2])),
      pAUC = map_dbl(eval, ~ pAUC(.x[, 1], .x[, 2]))
    )
}
boot <- function(x, n = 1e5, f = mean) {
  sd(replicate(n, f(sample(x, replace = TRUE))))
}
myggplot <- function(..., coeff = 1) {
  bigstatsr:::MY_THEME(ggplot(...), coeff = coeff) +
  theme(strip.text.x = element_text(size = rel(2)),
        strip.text.y = element_text(size = rel(2)))
} 
barplot_causal <- function(results, h2) {
  
  results %>%
    myggplot(aes(par.causal, AUC_mean, fill = method, color = method)) +
    geom_hline(yintercept = 0.5, linetype = 2) +
    geom_col(position = position_dodge(), alpha = 0.3) +
    geom_errorbar(aes(ymin = AUC_mean - 2 * AUC_boot, ymax = AUC_mean + 2 * AUC_boot),
                  position = position_dodge(width = 0.9), color = "black", width = 0.2) + 
    scale_y_continuous(limits = c(0.5, NA), minor_breaks = 0:20 / 20,
                       oob = scales::rescale_none) +
    labs(x = "Causal SNPs (number and location)", y = "Mean of 100 AUCs",
         fill = "Method", color = "Method") +
    scale_fill_manual(values = methods.color) +
    scale_color_manual(values = methods.color)
}

barplot_causal_one <- function(results, h2) {
  
  auc_max <- `if`(h2 == 0.8, 0.94, 0.84)
  
  results %>%
    filter(par.h2 == h2) %>%
    barplot_causal() +
    geom_hline(yintercept = auc_max, linetype = 3, color = "blue") +
    facet_grid(par.dist ~ .)
}

barplot_causal_all <- function(results) {
  
  results %>%
    barplot_causal() +
    geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
               data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
    facet_grid(par.dist ~ par.h2)
}
compare_logit <- function(results, with_method) {
  
  results <- filter(
    results, method %in% c("logit-simple", with_method), par.h2 == 0.8)
  
  results.summary <- results %>%
    group_by_at(c(vars(starts_with("par")), "method")) %>%
    summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
    print(n = Inf)
  
  nsimu <- results.summary$N[[1]]
  # stopifnot(all(results.summary$N == nsimu))
  
  plot_extra <- function(y, ylab = y) {
    
    results %>%
      myggplot() +
      geom_boxplot(aes_string("par.causal", y, color = "method", 
                              fill = "method"), alpha = 0.3) + 
      theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
      facet_grid(par.model ~ par.dist) +
      labs(x = "Causal SNPs (number and location)", y = ylab, 
           fill = "Method", color = "Method") +
      theme(legend.position = "none") +
      scale_fill_manual(values = methods.color) +
      scale_color_manual(values = methods.color) +
      scale_y_continuous(limits = c(0, NA))
  }
  
  p1 <- results.summary %>%
    barplot_causal_one(h2 = 0.8) +
    facet_grid(par.model ~ par.dist) +
    labs(y = sprintf("Mean of %d AUCs", nsimu))
  
  p2 <- cowplot::plot_grid(
    plot_extra("nb.preds", "Number of predictors"),
    plot_extra("timing", "Execution time (in seconds)"),
    ncol = 1, align = "hv", scale = 0.95, 
    labels = LETTERS[2:3], label_size = 20
  )
  
  p12 <- cowplot::plot_grid(
    p1 + theme(legend.position = "none"), p2, 
    ncol = 2, scale = 0.95, rel_widths = c(6, 4), 
    labels = c("A", ""), label_size = 20
  )
  
  cowplot::plot_grid(
    cowplot::get_legend(p1 + theme(legend.direction = "horizontal")), p12, 
    rel_heights = c(0.1, 1), ncol = 1
  )
}

Results with T-Trees

results1 <- list.files("results1", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()
compare_logit(results1, with_method = "T-Trees")
## # A tibble: 32 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##    par.causal  par.dist par.h2 par.model method       AUC_mean AUC_boot     N
##    <fct>       <chr>     <dbl> <chr>     <chr>           <dbl>    <dbl> <int>
##  1 30 in HLA   gaussian  0.800 fancy     logit-simple    0.856  0.00829     5
##  2 30 in HLA   gaussian  0.800 fancy     T-Trees         0.818  0.0109      5
##  3 30 in HLA   gaussian  0.800 simple    logit-simple    0.930  0.00289     5
##  4 30 in HLA   gaussian  0.800 simple    T-Trees         0.834  0.00912     5
##  5 30 in HLA   laplace   0.800 fancy     logit-simple    0.875  0.0133      5
##  6 30 in HLA   laplace   0.800 fancy     T-Trees         0.844  0.0113      5
##  7 30 in HLA   laplace   0.800 simple    logit-simple    0.924  0.00490     5
##  8 30 in HLA   laplace   0.800 simple    T-Trees         0.844  0.00788     5
##  9 30 in all   gaussian  0.800 fancy     logit-simple    0.877  0.0113      5
## 10 30 in all   gaussian  0.800 fancy     T-Trees         0.841  0.00848     5
## 11 30 in all   gaussian  0.800 simple    logit-simple    0.933  0.00280     5
## 12 30 in all   gaussian  0.800 simple    T-Trees         0.823  0.00536     5
## 13 30 in all   laplace   0.800 fancy     logit-simple    0.887  0.00344     5
## 14 30 in all   laplace   0.800 fancy     T-Trees         0.848  0.00712     5
## 15 30 in all   laplace   0.800 simple    logit-simple    0.938  0.00277     5
## 16 30 in all   laplace   0.800 simple    T-Trees         0.843  0.0187      5
## 17 300 in all  gaussian  0.800 fancy     logit-simple    0.781  0.00820     5
## 18 300 in all  gaussian  0.800 fancy     T-Trees         0.604  0.00601     5
## 19 300 in all  gaussian  0.800 simple    logit-simple    0.853  0.00289     5
## 20 300 in all  gaussian  0.800 simple    T-Trees         0.572  0.00557     5
## 21 300 in all  laplace   0.800 fancy     logit-simple    0.814  0.00778     5
## 22 300 in all  laplace   0.800 fancy     T-Trees         0.683  0.0102      5
## 23 300 in all  laplace   0.800 simple    logit-simple    0.867  0.00630     5
## 24 300 in all  laplace   0.800 simple    T-Trees         0.659  0.0252      5
## 25 3000 in all gaussian  0.800 fancy     logit-simple    0.545  0.00848     5
## 26 3000 in all gaussian  0.800 fancy     T-Trees         0.509  0.00374     5
## 27 3000 in all gaussian  0.800 simple    logit-simple    0.582  0.0103      5
## 28 3000 in all gaussian  0.800 simple    T-Trees         0.495  0.00802     5
## 29 3000 in all laplace   0.800 fancy     logit-simple    0.616  0.00855     5
## 30 3000 in all laplace   0.800 fancy     T-Trees         0.524  0.00684     5
## 31 3000 in all laplace   0.800 simple    logit-simple    0.653  0.00943     5
## 32 3000 in all laplace   0.800 simple    T-Trees         0.517  0.00557     5

ggsave("figures/supp-ttrees.pdf", scale = 1/100, width = 1400, height = 1060)

Results with logit-triple & model fancy

results2 <- list.files("results2", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results2.summary <- results2 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf) 
## # A tibble: 160 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##     par.causal  par.dist par.h2 par.model method        AUC_mean AUC_boot     N
##     <fct>       <chr>     <dbl> <chr>     <chr>            <dbl>    <dbl> <int>
##   1 30 in HLA   gaussian  0.500 fancy     logit-simple     0.775 0.00299    100
##   2 30 in HLA   gaussian  0.500 fancy     logit-triple     0.802 0.00230    100
##   3 30 in HLA   gaussian  0.500 fancy     PRS-all          0.597 0.00394    100
##   4 30 in HLA   gaussian  0.500 fancy     PRS-max          0.732 0.00296    100
##   5 30 in HLA   gaussian  0.500 fancy     PRS-stringent    0.718 0.00310    100
##   6 30 in HLA   gaussian  0.500 simple    logit-simple     0.818 0.00156    100
##   7 30 in HLA   gaussian  0.500 simple    logit-triple     0.817 0.00157    100
##   8 30 in HLA   gaussian  0.500 simple    PRS-all          0.618 0.00369    100
##   9 30 in HLA   gaussian  0.500 simple    PRS-max          0.760 0.00205    100
##  10 30 in HLA   gaussian  0.500 simple    PRS-stringent    0.747 0.00218    100
##  11 30 in HLA   gaussian  0.800 fancy     logit-simple     0.873 0.00241    100
##  12 30 in HLA   gaussian  0.800 fancy     logit-triple     0.911 0.00130    100
##  13 30 in HLA   gaussian  0.800 fancy     PRS-all          0.657 0.00474    100
##  14 30 in HLA   gaussian  0.800 fancy     PRS-max          0.799 0.00304    100
##  15 30 in HLA   gaussian  0.800 fancy     PRS-stringent    0.782 0.00315    100
##  16 30 in HLA   gaussian  0.800 simple    logit-simple     0.923 0.00101    100
##  17 30 in HLA   gaussian  0.800 simple    logit-triple     0.922 0.00103    100
##  18 30 in HLA   gaussian  0.800 simple    PRS-all          0.686 0.00398    100
##  19 30 in HLA   gaussian  0.800 simple    PRS-max          0.836 0.00217    100
##  20 30 in HLA   gaussian  0.800 simple    PRS-stringent    0.819 0.00229    100
##  21 30 in HLA   laplace   0.500 fancy     logit-simple     0.775 0.00341    100
##  22 30 in HLA   laplace   0.500 fancy     logit-triple     0.804 0.00253    100
##  23 30 in HLA   laplace   0.500 fancy     PRS-all          0.599 0.00317    100
##  24 30 in HLA   laplace   0.500 fancy     PRS-max          0.737 0.00354    100
##  25 30 in HLA   laplace   0.500 fancy     PRS-stringent    0.719 0.00327    100
##  26 30 in HLA   laplace   0.500 simple    logit-simple     0.824 0.00152    100
##  27 30 in HLA   laplace   0.500 simple    logit-triple     0.823 0.00162    100
##  28 30 in HLA   laplace   0.500 simple    PRS-all          0.625 0.00353    100
##  29 30 in HLA   laplace   0.500 simple    PRS-max          0.769 0.00213    100
##  30 30 in HLA   laplace   0.500 simple    PRS-stringent    0.751 0.00207    100
##  31 30 in HLA   laplace   0.800 fancy     logit-simple     0.876 0.00275    100
##  32 30 in HLA   laplace   0.800 fancy     logit-triple     0.912 0.00169    100
##  33 30 in HLA   laplace   0.800 fancy     PRS-all          0.653 0.00422    100
##  34 30 in HLA   laplace   0.800 fancy     PRS-max          0.810 0.00331    100
##  35 30 in HLA   laplace   0.800 fancy     PRS-stringent    0.787 0.00316    100
##  36 30 in HLA   laplace   0.800 simple    logit-simple     0.928 0.00112    100
##  37 30 in HLA   laplace   0.800 simple    logit-triple     0.926 0.00115    100
##  38 30 in HLA   laplace   0.800 simple    PRS-all          0.695 0.00467    100
##  39 30 in HLA   laplace   0.800 simple    PRS-max          0.843 0.00314    100
##  40 30 in HLA   laplace   0.800 simple    PRS-stringent    0.823 0.00294    100
##  41 30 in all   gaussian  0.500 fancy     logit-simple     0.774 0.00250    100
##  42 30 in all   gaussian  0.500 fancy     logit-triple     0.808 0.00168    100
##  43 30 in all   gaussian  0.500 fancy     PRS-all          0.539 0.00214    100
##  44 30 in all   gaussian  0.500 fancy     PRS-max          0.762 0.00235    100
##  45 30 in all   gaussian  0.500 fancy     PRS-stringent    0.753 0.00241    100
##  46 30 in all   gaussian  0.500 simple    logit-simple     0.821 0.00134    100
##  47 30 in all   gaussian  0.500 simple    logit-triple     0.819 0.00129    100
##  48 30 in all   gaussian  0.500 simple    PRS-all          0.548 0.00214    100
##  49 30 in all   gaussian  0.500 simple    PRS-max          0.806 0.00156    100
##  50 30 in all   gaussian  0.500 simple    PRS-stringent    0.799 0.00165    100
##  51 30 in all   gaussian  0.800 fancy     logit-simple     0.879 0.00214    100
##  52 30 in all   gaussian  0.800 fancy     logit-triple     0.915 0.00119    100
##  53 30 in all   gaussian  0.800 fancy     PRS-all          0.566 0.00187    100
##  54 30 in all   gaussian  0.800 fancy     PRS-max          0.854 0.00226    100
##  55 30 in all   gaussian  0.800 fancy     PRS-stringent    0.844 0.00240    100
##  56 30 in all   gaussian  0.800 simple    logit-simple     0.928 0.000812   100
##  57 30 in all   gaussian  0.800 simple    logit-triple     0.927 0.000866   100
##  58 30 in all   gaussian  0.800 simple    PRS-all          0.585 0.00183    100
##  59 30 in all   gaussian  0.800 simple    PRS-max          0.898 0.00184    100
##  60 30 in all   gaussian  0.800 simple    PRS-stringent    0.882 0.00250    100
##  61 30 in all   laplace   0.500 fancy     logit-simple     0.781 0.00244    100
##  62 30 in all   laplace   0.500 fancy     logit-triple     0.807 0.00187    100
##  63 30 in all   laplace   0.500 fancy     PRS-all          0.540 0.00191    100
##  64 30 in all   laplace   0.500 fancy     PRS-max          0.768 0.00242    100
##  65 30 in all   laplace   0.500 fancy     PRS-stringent    0.758 0.00248    100
##  66 30 in all   laplace   0.500 simple    logit-simple     0.825 0.00144    100
##  67 30 in all   laplace   0.500 simple    logit-triple     0.824 0.00147    100
##  68 30 in all   laplace   0.500 simple    PRS-all          0.553 0.00192    100
##  69 30 in all   laplace   0.500 simple    PRS-max          0.806 0.00174    100
##  70 30 in all   laplace   0.500 simple    PRS-stringent    0.797 0.00187    100
##  71 30 in all   laplace   0.800 fancy     logit-simple     0.881 0.00245    100
##  72 30 in all   laplace   0.800 fancy     logit-triple     0.915 0.00153    100
##  73 30 in all   laplace   0.800 fancy     PRS-all          0.571 0.00204    100
##  74 30 in all   laplace   0.800 fancy     PRS-max          0.853 0.00246    100
##  75 30 in all   laplace   0.800 fancy     PRS-stringent    0.841 0.00253    100
##  76 30 in all   laplace   0.800 simple    logit-simple     0.929 0.000896   100
##  77 30 in all   laplace   0.800 simple    logit-triple     0.927 0.000897   100
##  78 30 in all   laplace   0.800 simple    PRS-all          0.582 0.00186    100
##  79 30 in all   laplace   0.800 simple    PRS-max          0.896 0.00156    100
##  80 30 in all   laplace   0.800 simple    PRS-stringent    0.884 0.00205    100
##  81 300 in all  gaussian  0.500 fancy     logit-simple     0.670 0.00230    100
##  82 300 in all  gaussian  0.500 fancy     logit-triple     0.692 0.00210    100
##  83 300 in all  gaussian  0.500 fancy     PRS-all          0.541 0.00196    100
##  84 300 in all  gaussian  0.500 fancy     PRS-max          0.664 0.00222    100
##  85 300 in all  gaussian  0.500 fancy     PRS-stringent    0.617 0.00291    100
##  86 300 in all  gaussian  0.500 simple    logit-simple     0.715 0.00192    100
##  87 300 in all  gaussian  0.500 simple    logit-triple     0.702 0.00205    100
##  88 300 in all  gaussian  0.500 simple    PRS-all          0.551 0.00179    100
##  89 300 in all  gaussian  0.500 simple    PRS-max          0.703 0.00205    100
##  90 300 in all  gaussian  0.500 simple    PRS-stringent    0.640 0.00284    100
##  91 300 in all  gaussian  0.800 fancy     logit-simple     0.780 0.00187    100
##  92 300 in all  gaussian  0.800 fancy     logit-triple     0.820 0.00151    100
##  93 300 in all  gaussian  0.800 fancy     PRS-all          0.565 0.00203    100
##  94 300 in all  gaussian  0.800 fancy     PRS-max          0.756 0.00188    100
##  95 300 in all  gaussian  0.800 fancy     PRS-stringent    0.712 0.00223    100
##  96 300 in all  gaussian  0.800 simple    logit-simple     0.845 0.00143    100
##  97 300 in all  gaussian  0.800 simple    logit-triple     0.830 0.00146    100
##  98 300 in all  gaussian  0.800 simple    PRS-all          0.579 0.00190    100
##  99 300 in all  gaussian  0.800 simple    PRS-max          0.806 0.00182    100
## 100 300 in all  gaussian  0.800 simple    PRS-stringent    0.751 0.00209    100
## 101 300 in all  laplace   0.500 fancy     logit-simple     0.708 0.00238    100
## 102 300 in all  laplace   0.500 fancy     logit-triple     0.734 0.00190    100
## 103 300 in all  laplace   0.500 fancy     PRS-all          0.540 0.00199    100
## 104 300 in all  laplace   0.500 fancy     PRS-max          0.699 0.00236    100
## 105 300 in all  laplace   0.500 fancy     PRS-stringent    0.672 0.00264    100
## 106 300 in all  laplace   0.500 simple    logit-simple     0.744 0.00186    100
## 107 300 in all  laplace   0.500 simple    logit-triple     0.735 0.00200    100
## 108 300 in all  laplace   0.500 simple    PRS-all          0.552 0.00219    100
## 109 300 in all  laplace   0.500 simple    PRS-max          0.729 0.00202    100
## 110 300 in all  laplace   0.500 simple    PRS-stringent    0.698 0.00251    100
## 111 300 in all  laplace   0.800 fancy     logit-simple     0.805 0.00216    100
## 112 300 in all  laplace   0.800 fancy     logit-triple     0.846 0.00145    100
## 113 300 in all  laplace   0.800 fancy     PRS-all          0.566 0.00175    100
## 114 300 in all  laplace   0.800 fancy     PRS-max          0.779 0.00214    100
## 115 300 in all  laplace   0.800 fancy     PRS-stringent    0.755 0.00262    100
## 116 300 in all  laplace   0.800 simple    logit-simple     0.866 0.00126    100
## 117 300 in all  laplace   0.800 simple    logit-triple     0.858 0.00135    100
## 118 300 in all  laplace   0.800 simple    PRS-all          0.584 0.00189    100
## 119 300 in all  laplace   0.800 simple    PRS-max          0.826 0.00184    100
## 120 300 in all  laplace   0.800 simple    PRS-stringent    0.801 0.00209    100
## 121 3000 in all gaussian  0.500 fancy     logit-simple     0.526 0.00188    100
## 122 3000 in all gaussian  0.500 fancy     logit-triple     0.524 0.00202    100
## 123 3000 in all gaussian  0.500 fancy     PRS-all          0.538 0.00192    100
## 124 3000 in all gaussian  0.500 fancy     PRS-max          0.556 0.00159    100
## 125 3000 in all gaussian  0.500 fancy     PRS-stringent    0.501 0.000510   100
## 126 3000 in all gaussian  0.500 simple    logit-simple     0.531 0.00211    100
## 127 3000 in all gaussian  0.500 simple    logit-triple     0.524 0.00202    100
## 128 3000 in all gaussian  0.500 simple    PRS-all          0.548 0.00198    100
## 129 3000 in all gaussian  0.500 simple    PRS-max          0.565 0.00162    100
## 130 3000 in all gaussian  0.500 simple    PRS-stringent    0.500 0.000275   100
## 131 3000 in all gaussian  0.800 fancy     logit-simple     0.563 0.00197    100
## 132 3000 in all gaussian  0.800 fancy     logit-triple     0.561 0.00197    100
## 133 3000 in all gaussian  0.800 fancy     PRS-all          0.561 0.00196    100
## 134 3000 in all gaussian  0.800 fancy     PRS-max          0.583 0.00162    100
## 135 3000 in all gaussian  0.800 fancy     PRS-stringent    0.507 0.00144    100
## 136 3000 in all gaussian  0.800 simple    logit-simple     0.584 0.00188    100
## 137 3000 in all gaussian  0.800 simple    logit-triple     0.567 0.00205    100
## 138 3000 in all gaussian  0.800 simple    PRS-all          0.584 0.00183    100
## 139 3000 in all gaussian  0.800 simple    PRS-max          0.602 0.00137    100
## 140 3000 in all gaussian  0.800 simple    PRS-stringent    0.507 0.00165    100
## 141 3000 in all laplace   0.500 fancy     logit-simple     0.554 0.00205    100
## 142 3000 in all laplace   0.500 fancy     logit-triple     0.553 0.00226    100
## 143 3000 in all laplace   0.500 fancy     PRS-all          0.542 0.00176    100
## 144 3000 in all laplace   0.500 fancy     PRS-max          0.566 0.00148    100
## 145 3000 in all laplace   0.500 fancy     PRS-stringent    0.510 0.00212    100
## 146 3000 in all laplace   0.500 simple    logit-simple     0.565 0.00182    100
## 147 3000 in all laplace   0.500 simple    logit-triple     0.554 0.00183    100
## 148 3000 in all laplace   0.500 simple    PRS-all          0.551 0.00187    100
## 149 3000 in all laplace   0.500 simple    PRS-max          0.577 0.00145    100
## 150 3000 in all laplace   0.500 simple    PRS-stringent    0.514 0.00214    100
## 151 3000 in all laplace   0.800 fancy     logit-simple     0.616 0.00207    100
## 152 3000 in all laplace   0.800 fancy     logit-triple     0.623 0.00198    100
## 153 3000 in all laplace   0.800 fancy     PRS-all          0.564 0.00192    100
## 154 3000 in all laplace   0.800 fancy     PRS-max          0.609 0.00186    100
## 155 3000 in all laplace   0.800 fancy     PRS-stringent    0.543 0.00285    100
## 156 3000 in all laplace   0.800 simple    logit-simple     0.652 0.00195    100
## 157 3000 in all laplace   0.800 simple    logit-triple     0.633 0.00219    100
## 158 3000 in all laplace   0.800 simple    PRS-all          0.581 0.00182    100
## 159 3000 in all laplace   0.800 simple    PRS-max          0.630 0.00170    100
## 160 3000 in all laplace   0.800 simple    PRS-stringent    0.560 0.00296    100

Results with logit-triple

compare_logit(results2, with_method = "logit-triple")
## # A tibble: 32 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##    par.causal  par.dist par.h2 par.model method       AUC_mean AUC_boot     N
##    <fct>       <chr>     <dbl> <chr>     <chr>           <dbl>    <dbl> <int>
##  1 30 in HLA   gaussian  0.800 fancy     logit-simple    0.873 0.00242    100
##  2 30 in HLA   gaussian  0.800 fancy     logit-triple    0.911 0.00130    100
##  3 30 in HLA   gaussian  0.800 simple    logit-simple    0.923 0.00102    100
##  4 30 in HLA   gaussian  0.800 simple    logit-triple    0.922 0.00103    100
##  5 30 in HLA   laplace   0.800 fancy     logit-simple    0.876 0.00275    100
##  6 30 in HLA   laplace   0.800 fancy     logit-triple    0.912 0.00169    100
##  7 30 in HLA   laplace   0.800 simple    logit-simple    0.928 0.00112    100
##  8 30 in HLA   laplace   0.800 simple    logit-triple    0.926 0.00115    100
##  9 30 in all   gaussian  0.800 fancy     logit-simple    0.879 0.00214    100
## 10 30 in all   gaussian  0.800 fancy     logit-triple    0.915 0.00118    100
## 11 30 in all   gaussian  0.800 simple    logit-simple    0.928 0.000814   100
## 12 30 in all   gaussian  0.800 simple    logit-triple    0.927 0.000865   100
## 13 30 in all   laplace   0.800 fancy     logit-simple    0.881 0.00244    100
## 14 30 in all   laplace   0.800 fancy     logit-triple    0.915 0.00154    100
## 15 30 in all   laplace   0.800 simple    logit-simple    0.929 0.000894   100
## 16 30 in all   laplace   0.800 simple    logit-triple    0.927 0.000894   100
## 17 300 in all  gaussian  0.800 fancy     logit-simple    0.780 0.00188    100
## 18 300 in all  gaussian  0.800 fancy     logit-triple    0.820 0.00151    100
## 19 300 in all  gaussian  0.800 simple    logit-simple    0.845 0.00142    100
## 20 300 in all  gaussian  0.800 simple    logit-triple    0.830 0.00145    100
## 21 300 in all  laplace   0.800 fancy     logit-simple    0.805 0.00216    100
## 22 300 in all  laplace   0.800 fancy     logit-triple    0.846 0.00146    100
## 23 300 in all  laplace   0.800 simple    logit-simple    0.866 0.00126    100
## 24 300 in all  laplace   0.800 simple    logit-triple    0.858 0.00134    100
## 25 3000 in all gaussian  0.800 fancy     logit-simple    0.563 0.00197    100
## 26 3000 in all gaussian  0.800 fancy     logit-triple    0.561 0.00196    100
## 27 3000 in all gaussian  0.800 simple    logit-simple    0.584 0.00189    100
## 28 3000 in all gaussian  0.800 simple    logit-triple    0.567 0.00205    100
## 29 3000 in all laplace   0.800 fancy     logit-simple    0.616 0.00207    100
## 30 3000 in all laplace   0.800 fancy     logit-triple    0.623 0.00197    100
## 31 3000 in all laplace   0.800 simple    logit-simple    0.652 0.00195    100
## 32 3000 in all laplace   0.800 simple    logit-triple    0.633 0.00218    100

ggsave("figures/supp-triple.pdf", scale = 1/100, width = 1400, height = 1060)
results2.summary %>%
  filter(grepl("logit", method)) %>%
  barplot_causal_one(h2 = 0.5) +
  facet_grid(par.model ~ par.dist)

ggsave("figures/supp-AUC-triple.pdf", scale = 1/110, width = 1242, height = 951)

Results with model fancy

results2.summary %>%
  filter(par.model == "fancy", method %in% c("logit-simple", "PRS-max")) %>%
  barplot_causal_all()

ggsave("figures/supp-AUC-logit-fancy.pdf", scale = 1/110, width = 1242, height = 951)
results2.summary %>%
  filter(par.model == "fancy", grepl("PRS", method)) %>%
  barplot_causal_all()

ggsave("figures/supp-AUC-PRS-fancy.pdf", scale = 1/110, width = 1242, height = 951)

Results with only logit-simple & PRSs

Correlation between predictive measures

results3 <- results2 %>%
  filter(par.model == "simple", method != "logit-triple")
results3 %>%
  filter(method %in% c("logit-simple", "PRS-max")) %>%
  mutate(Parameters  = interaction(par.h2, par.dist, method, sep = " | ")) %>%
  myggplot(aes(AUC, pAUC, color = Parameters)) + 
  geom_point(size = 0.6, alpha = 0.5) +
  geom_smooth(aes(linetype = Parameters), method = "loess", se = FALSE, size = 2) +
  theme(legend.key.width = unit(3.5, "line"), 
        legend.direction = "horizontal") + 
  labs(y = "Partial AUC (specificity: [0.9, 1])") +
  theme(legend.position = "top", axis.title = element_text(size = rel(2.2))) +
  

ggsave("figures/supp-AUC-corr.pdf", scale = 1/100, width = 1525, height = 983)

cor(results3$AUC, results3$pAUC, method = "spearman")
## [1] 0.9799784

6000 in training & all chromosomes

results3.summary <- results3 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 64 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##    par.causal  par.dist par.h2 par.model method        AUC_mean AUC_boot     N
##    <fct>       <chr>     <dbl> <chr>     <chr>            <dbl>    <dbl> <int>
##  1 30 in HLA   gaussian  0.500 simple    logit-simple     0.818 0.00157    100
##  2 30 in HLA   gaussian  0.500 simple    PRS-all          0.618 0.00369    100
##  3 30 in HLA   gaussian  0.500 simple    PRS-max          0.760 0.00204    100
##  4 30 in HLA   gaussian  0.500 simple    PRS-stringent    0.747 0.00219    100
##  5 30 in HLA   gaussian  0.800 simple    logit-simple     0.923 0.00101    100
##  6 30 in HLA   gaussian  0.800 simple    PRS-all          0.686 0.00399    100
##  7 30 in HLA   gaussian  0.800 simple    PRS-max          0.836 0.00219    100
##  8 30 in HLA   gaussian  0.800 simple    PRS-stringent    0.819 0.00228    100
##  9 30 in HLA   laplace   0.500 simple    logit-simple     0.824 0.00152    100
## 10 30 in HLA   laplace   0.500 simple    PRS-all          0.625 0.00355    100
## 11 30 in HLA   laplace   0.500 simple    PRS-max          0.769 0.00213    100
## 12 30 in HLA   laplace   0.500 simple    PRS-stringent    0.751 0.00205    100
## 13 30 in HLA   laplace   0.800 simple    logit-simple     0.928 0.00112    100
## 14 30 in HLA   laplace   0.800 simple    PRS-all          0.695 0.00466    100
## 15 30 in HLA   laplace   0.800 simple    PRS-max          0.843 0.00313    100
## 16 30 in HLA   laplace   0.800 simple    PRS-stringent    0.823 0.00293    100
## 17 30 in all   gaussian  0.500 simple    logit-simple     0.821 0.00135    100
## 18 30 in all   gaussian  0.500 simple    PRS-all          0.548 0.00214    100
## 19 30 in all   gaussian  0.500 simple    PRS-max          0.806 0.00156    100
## 20 30 in all   gaussian  0.500 simple    PRS-stringent    0.799 0.00164    100
## 21 30 in all   gaussian  0.800 simple    logit-simple     0.928 0.000812   100
## 22 30 in all   gaussian  0.800 simple    PRS-all          0.585 0.00183    100
## 23 30 in all   gaussian  0.800 simple    PRS-max          0.898 0.00184    100
## 24 30 in all   gaussian  0.800 simple    PRS-stringent    0.882 0.00249    100
## 25 30 in all   laplace   0.500 simple    logit-simple     0.825 0.00144    100
## 26 30 in all   laplace   0.500 simple    PRS-all          0.553 0.00192    100
## 27 30 in all   laplace   0.500 simple    PRS-max          0.806 0.00173    100
## 28 30 in all   laplace   0.500 simple    PRS-stringent    0.797 0.00187    100
## 29 30 in all   laplace   0.800 simple    logit-simple     0.929 0.000891   100
## 30 30 in all   laplace   0.800 simple    PRS-all          0.582 0.00187    100
## 31 30 in all   laplace   0.800 simple    PRS-max          0.896 0.00156    100
## 32 30 in all   laplace   0.800 simple    PRS-stringent    0.884 0.00205    100
## 33 300 in all  gaussian  0.500 simple    logit-simple     0.715 0.00193    100
## 34 300 in all  gaussian  0.500 simple    PRS-all          0.551 0.00179    100
## 35 300 in all  gaussian  0.500 simple    PRS-max          0.703 0.00204    100
## 36 300 in all  gaussian  0.500 simple    PRS-stringent    0.640 0.00284    100
## 37 300 in all  gaussian  0.800 simple    logit-simple     0.845 0.00143    100
## 38 300 in all  gaussian  0.800 simple    PRS-all          0.579 0.00190    100
## 39 300 in all  gaussian  0.800 simple    PRS-max          0.806 0.00182    100
## 40 300 in all  gaussian  0.800 simple    PRS-stringent    0.751 0.00209    100
## 41 300 in all  laplace   0.500 simple    logit-simple     0.744 0.00187    100
## 42 300 in all  laplace   0.500 simple    PRS-all          0.552 0.00220    100
## 43 300 in all  laplace   0.500 simple    PRS-max          0.729 0.00202    100
## 44 300 in all  laplace   0.500 simple    PRS-stringent    0.698 0.00250    100
## 45 300 in all  laplace   0.800 simple    logit-simple     0.866 0.00126    100
## 46 300 in all  laplace   0.800 simple    PRS-all          0.584 0.00190    100
## 47 300 in all  laplace   0.800 simple    PRS-max          0.826 0.00185    100
## 48 300 in all  laplace   0.800 simple    PRS-stringent    0.801 0.00208    100
## 49 3000 in all gaussian  0.500 simple    logit-simple     0.531 0.00212    100
## 50 3000 in all gaussian  0.500 simple    PRS-all          0.548 0.00199    100
## 51 3000 in all gaussian  0.500 simple    PRS-max          0.565 0.00161    100
## 52 3000 in all gaussian  0.500 simple    PRS-stringent    0.500 0.000275   100
## 53 3000 in all gaussian  0.800 simple    logit-simple     0.584 0.00187    100
## 54 3000 in all gaussian  0.800 simple    PRS-all          0.584 0.00184    100
## 55 3000 in all gaussian  0.800 simple    PRS-max          0.602 0.00137    100
## 56 3000 in all gaussian  0.800 simple    PRS-stringent    0.507 0.00166    100
## 57 3000 in all laplace   0.500 simple    logit-simple     0.565 0.00181    100
## 58 3000 in all laplace   0.500 simple    PRS-all          0.551 0.00186    100
## 59 3000 in all laplace   0.500 simple    PRS-max          0.577 0.00145    100
## 60 3000 in all laplace   0.500 simple    PRS-stringent    0.514 0.00215    100
## 61 3000 in all laplace   0.800 simple    logit-simple     0.652 0.00195    100
## 62 3000 in all laplace   0.800 simple    PRS-all          0.581 0.00182    100
## 63 3000 in all laplace   0.800 simple    PRS-max          0.630 0.00170    100
## 64 3000 in all laplace   0.800 simple    PRS-stringent    0.560 0.00296    100
results3.summary %>%
  filter(method %in% c("logit-simple", "PRS-max"), par.model == "simple") %>%
  barplot_causal_one(h2 = 0.8)

ggsave("figures/main-AUC-logit.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(grepl("PRS", method)) %>%
  barplot_causal_one(h2 = 0.8)

ggsave("figures/main-AUC-PRS.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(method %in% c("logit-simple", "PRS-max")) %>%
  barplot_causal_one(h2 = 0.5)

ggsave("figures/supp-AUC-logit.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(grepl("PRS", method)) %>%
  barplot_causal_one(h2 = 0.5)

ggsave("figures/supp-AUC-PRS.pdf", scale = 1/90, width = 844, height = 872)

6000 in training & only chromosome 6

results4 <- list.files("results4", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results4 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 64 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##    par.causal  par.dist par.h2 par.model method        AUC_mean AUC_boot     N
##    <fct>       <chr>     <dbl> <chr>     <chr>            <dbl>    <dbl> <int>
##  1 30 in HLA   gaussian  0.500 simple    logit-simple     0.824 0.00152    100
##  2 30 in HLA   gaussian  0.500 simple    PRS-all          0.719 0.00257    100
##  3 30 in HLA   gaussian  0.500 simple    PRS-max          0.761 0.00229    100
##  4 30 in HLA   gaussian  0.500 simple    PRS-stringent    0.744 0.00243    100
##  5 30 in HLA   gaussian  0.800 simple    logit-simple     0.929 0.000939   100
##  6 30 in HLA   gaussian  0.800 simple    PRS-all          0.797 0.00250    100
##  7 30 in HLA   gaussian  0.800 simple    PRS-max          0.835 0.00222    100
##  8 30 in HLA   gaussian  0.800 simple    PRS-stringent    0.819 0.00222    100
##  9 30 in HLA   laplace   0.500 simple    logit-simple     0.826 0.00148    100
## 10 30 in HLA   laplace   0.500 simple    PRS-all          0.723 0.00268    100
## 11 30 in HLA   laplace   0.500 simple    PRS-max          0.768 0.00227    100
## 12 30 in HLA   laplace   0.500 simple    PRS-stringent    0.750 0.00220    100
## 13 30 in HLA   laplace   0.800 simple    logit-simple     0.927 0.00132    100
## 14 30 in HLA   laplace   0.800 simple    PRS-all          0.798 0.00293    100
## 15 30 in HLA   laplace   0.800 simple    PRS-max          0.841 0.00280    100
## 16 30 in HLA   laplace   0.800 simple    PRS-stringent    0.821 0.00278    100
## 17 30 in all   gaussian  0.500 simple    logit-simple     0.830 0.00141    100
## 18 30 in all   gaussian  0.500 simple    PRS-all          0.671 0.00201    100
## 19 30 in all   gaussian  0.500 simple    PRS-max          0.805 0.00203    100
## 20 30 in all   gaussian  0.500 simple    PRS-stringent    0.793 0.00240    100
## 21 30 in all   gaussian  0.800 simple    logit-simple     0.930 0.000906   100
## 22 30 in all   gaussian  0.800 simple    PRS-all          0.745 0.00210    100
## 23 30 in all   gaussian  0.800 simple    PRS-max          0.886 0.00240    100
## 24 30 in all   gaussian  0.800 simple    PRS-stringent    0.864 0.00382    100
## 25 30 in all   laplace   0.500 simple    logit-simple     0.829 0.00144    100
## 26 30 in all   laplace   0.500 simple    PRS-all          0.674 0.00219    100
## 27 30 in all   laplace   0.500 simple    PRS-max          0.801 0.00202    100
## 28 30 in all   laplace   0.500 simple    PRS-stringent    0.788 0.00220    100
## 29 30 in all   laplace   0.800 simple    logit-simple     0.932 0.00104    100
## 30 30 in all   laplace   0.800 simple    PRS-all          0.751 0.00235    100
## 31 30 in all   laplace   0.800 simple    PRS-max          0.883 0.00274    100
## 32 30 in all   laplace   0.800 simple    PRS-stringent    0.868 0.00337    100
## 33 300 in all  gaussian  0.500 simple    logit-simple     0.764 0.00150    100
## 34 300 in all  gaussian  0.500 simple    PRS-all          0.665 0.00186    100
## 35 300 in all  gaussian  0.500 simple    PRS-max          0.708 0.00261    100
## 36 300 in all  gaussian  0.500 simple    PRS-stringent    0.607 0.00273    100
## 37 300 in all  gaussian  0.800 simple    logit-simple     0.885 0.00109    100
## 38 300 in all  gaussian  0.800 simple    PRS-all          0.738 0.00170    100
## 39 300 in all  gaussian  0.800 simple    PRS-max          0.787 0.00322    100
## 40 300 in all  gaussian  0.800 simple    PRS-stringent    0.691 0.00255    100
## 41 300 in all  laplace   0.500 simple    logit-simple     0.779 0.00170    100
## 42 300 in all  laplace   0.500 simple    PRS-all          0.669 0.00172    100
## 43 300 in all  laplace   0.500 simple    PRS-max          0.729 0.00251    100
## 44 300 in all  laplace   0.500 simple    PRS-stringent    0.675 0.00285    100
## 45 300 in all  laplace   0.800 simple    logit-simple     0.895 0.00104    100
## 46 300 in all  laplace   0.800 simple    PRS-all          0.741 0.00174    100
## 47 300 in all  laplace   0.800 simple    PRS-max          0.815 0.00303    100
## 48 300 in all  laplace   0.800 simple    PRS-stringent    0.768 0.00295    100
## 49 3000 in all gaussian  0.500 simple    logit-simple     0.666 0.00176    100
## 50 3000 in all gaussian  0.500 simple    PRS-all          0.664 0.00196    100
## 51 3000 in all gaussian  0.500 simple    PRS-max          0.668 0.00191    100
## 52 3000 in all gaussian  0.500 simple    PRS-stringent    0.509 0.00220    100
## 53 3000 in all gaussian  0.800 simple    logit-simple     0.770 0.00159    100
## 54 3000 in all gaussian  0.800 simple    PRS-all          0.734 0.00154    100
## 55 3000 in all gaussian  0.800 simple    PRS-max          0.737 0.00155    100
## 56 3000 in all gaussian  0.800 simple    PRS-stringent    0.530 0.00360    100
## 57 3000 in all laplace   0.500 simple    logit-simple     0.685 0.00151    100
## 58 3000 in all laplace   0.500 simple    PRS-all          0.664 0.00173    100
## 59 3000 in all laplace   0.500 simple    PRS-max          0.670 0.00176    100
## 60 3000 in all laplace   0.500 simple    PRS-stringent    0.518 0.00274    100
## 61 3000 in all laplace   0.800 simple    logit-simple     0.793 0.00159    100
## 62 3000 in all laplace   0.800 simple    PRS-all          0.735 0.00174    100
## 63 3000 in all laplace   0.800 simple    PRS-max          0.739 0.00179    100
## 64 3000 in all laplace   0.800 simple    PRS-stringent    0.537 0.00347    100
results34 <- rbind(
  cbind(simu = "all", results3),
  cbind(simu = "chr6", results4)
) %>%
  as_tibble()
results34 %>%
  myggplot() +
  geom_hline(yintercept = 0.5, linetype = 2) +
  geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
             data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
  geom_boxplot(aes(method, AUC, fill = simu, color = simu), alpha = 0.3) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  facet_grid(par.model ~ par.causal) +
  facet_grid(par.h2 + par.dist ~ par.causal) +
  scale_fill_brewer(type = "qual", palette = 2) +
  scale_color_brewer(type = "qual", palette = 2) + 
  labs(x = "Method")

ggsave("figures/supp-AUC-chr6.pdf", scale = 1/110, width = 1153, height = 908)

Varying training size & all shromosomes

results5 <- list.files("results5", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results5.summary <- results5 %>%
  group_by_at(c(vars(starts_with("par")), "method", "n.train")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 80 x 9
## # Groups:   par.causal, par.dist, par.h2, par.model, method [?]
##    par.causal par.dist par.h2 par.model method        n.train AUC_mean AUC_boot     N
##    <fct>      <chr>     <dbl> <chr>     <chr>           <dbl>    <dbl>    <dbl> <int>
##  1 300 in all gaussian  0.500 simple    logit-simple    1000.    0.523 0.00167    100
##  2 300 in all gaussian  0.500 simple    logit-simple    2000.    0.579 0.00186    100
##  3 300 in all gaussian  0.500 simple    logit-simple    3000.    0.628 0.00200    100
##  4 300 in all gaussian  0.500 simple    logit-simple    4000.    0.666 0.00157    100
##  5 300 in all gaussian  0.500 simple    logit-simple    5000.    0.694 0.00149    100
##  6 300 in all gaussian  0.500 simple    PRS-all         1000.    0.521 0.000876   100
##  7 300 in all gaussian  0.500 simple    PRS-all         2000.    0.529 0.000843   100
##  8 300 in all gaussian  0.500 simple    PRS-all         3000.    0.535 0.00113    100
##  9 300 in all gaussian  0.500 simple    PRS-all         4000.    0.542 0.00108    100
## 10 300 in all gaussian  0.500 simple    PRS-all         5000.    0.549 0.00140    100
## 11 300 in all gaussian  0.500 simple    PRS-max         1000.    0.538 0.00134    100
## 12 300 in all gaussian  0.500 simple    PRS-max         2000.    0.576 0.00166    100
## 13 300 in all gaussian  0.500 simple    PRS-max         3000.    0.617 0.00205    100
## 14 300 in all gaussian  0.500 simple    PRS-max         4000.    0.652 0.00170    100
## 15 300 in all gaussian  0.500 simple    PRS-max         5000.    0.679 0.00156    100
## 16 300 in all gaussian  0.500 simple    PRS-stringent   1000.    0.501 0.000922   100
## 17 300 in all gaussian  0.500 simple    PRS-stringent   2000.    0.518 0.00254    100
## 18 300 in all gaussian  0.500 simple    PRS-stringent   3000.    0.553 0.00332    100
## 19 300 in all gaussian  0.500 simple    PRS-stringent   4000.    0.596 0.00272    100
## 20 300 in all gaussian  0.500 simple    PRS-stringent   5000.    0.616 0.00245    100
## 21 300 in all gaussian  0.800 simple    logit-simple    1000.    0.570 0.00242    100
## 22 300 in all gaussian  0.800 simple    logit-simple    2000.    0.678 0.00179    100
## 23 300 in all gaussian  0.800 simple    logit-simple    3000.    0.748 0.00148    100
## 24 300 in all gaussian  0.800 simple    logit-simple    4000.    0.796 0.00122    100
## 25 300 in all gaussian  0.800 simple    logit-simple    5000.    0.822 0.00121    100
## 26 300 in all gaussian  0.800 simple    PRS-all         1000.    0.533 0.000933   100
## 27 300 in all gaussian  0.800 simple    PRS-all         2000.    0.546 0.000966   100
## 28 300 in all gaussian  0.800 simple    PRS-all         3000.    0.557 0.000878   100
## 29 300 in all gaussian  0.800 simple    PRS-all         4000.    0.565 0.00111    100
## 30 300 in all gaussian  0.800 simple    PRS-all         5000.    0.576 0.00141    100
## 31 300 in all gaussian  0.800 simple    PRS-max         1000.    0.571 0.00197    100
## 32 300 in all gaussian  0.800 simple    PRS-max         2000.    0.656 0.00215    100
## 33 300 in all gaussian  0.800 simple    PRS-max         3000.    0.715 0.00186    100
## 34 300 in all gaussian  0.800 simple    PRS-max         4000.    0.758 0.00152    100
## 35 300 in all gaussian  0.800 simple    PRS-max         5000.    0.782 0.00154    100
## 36 300 in all gaussian  0.800 simple    PRS-stringent   1000.    0.509 0.00219    100
## 37 300 in all gaussian  0.800 simple    PRS-stringent   2000.    0.570 0.00370    100
## 38 300 in all gaussian  0.800 simple    PRS-stringent   3000.    0.639 0.00301    100
## 39 300 in all gaussian  0.800 simple    PRS-stringent   4000.    0.687 0.00210    100
## 40 300 in all gaussian  0.800 simple    PRS-stringent   5000.    0.721 0.00222    100
## 41 300 in all laplace   0.500 simple    logit-simple    1000.    0.563 0.00328    100
## 42 300 in all laplace   0.500 simple    logit-simple    2000.    0.636 0.00267    100
## 43 300 in all laplace   0.500 simple    logit-simple    3000.    0.685 0.00187    100
## 44 300 in all laplace   0.500 simple    logit-simple    4000.    0.711 0.00146    100
## 45 300 in all laplace   0.500 simple    logit-simple    5000.    0.734 0.00138    100
## 46 300 in all laplace   0.500 simple    PRS-all         1000.    0.521 0.000818   100
## 47 300 in all laplace   0.500 simple    PRS-all         2000.    0.529 0.000928   100
## 48 300 in all laplace   0.500 simple    PRS-all         3000.    0.536 0.000918   100
## 49 300 in all laplace   0.500 simple    PRS-all         4000.    0.541 0.00129    100
## 50 300 in all laplace   0.500 simple    PRS-all         5000.    0.546 0.00134    100
## 51 300 in all laplace   0.500 simple    PRS-max         1000.    0.572 0.00312    100
## 52 300 in all laplace   0.500 simple    PRS-max         2000.    0.631 0.00262    100
## 53 300 in all laplace   0.500 simple    PRS-max         3000.    0.675 0.00204    100
## 54 300 in all laplace   0.500 simple    PRS-max         4000.    0.700 0.00168    100
## 55 300 in all laplace   0.500 simple    PRS-max         5000.    0.718 0.00144    100
## 56 300 in all laplace   0.500 simple    PRS-stringent   1000.    0.523 0.00395    100
## 57 300 in all laplace   0.500 simple    PRS-stringent   2000.    0.583 0.00474    100
## 58 300 in all laplace   0.500 simple    PRS-stringent   3000.    0.636 0.00308    100
## 59 300 in all laplace   0.500 simple    PRS-stringent   4000.    0.662 0.00239    100
## 60 300 in all laplace   0.500 simple    PRS-stringent   5000.    0.686 0.00210    100
## 61 300 in all laplace   0.800 simple    logit-simple    1000.    0.647 0.00356    100
## 62 300 in all laplace   0.800 simple    logit-simple    2000.    0.750 0.00193    100
## 63 300 in all laplace   0.800 simple    logit-simple    3000.    0.799 0.00126    100
## 64 300 in all laplace   0.800 simple    logit-simple    4000.    0.831 0.00117    100
## 65 300 in all laplace   0.800 simple    logit-simple    5000.    0.852 0.000920   100
## 66 300 in all laplace   0.800 simple    PRS-all         1000.    0.532 0.000762   100
## 67 300 in all laplace   0.800 simple    PRS-all         2000.    0.548 0.000861   100
## 68 300 in all laplace   0.800 simple    PRS-all         3000.    0.559 0.000957   100
## 69 300 in all laplace   0.800 simple    PRS-all         4000.    0.565 0.00119    100
## 70 300 in all laplace   0.800 simple    PRS-all         5000.    0.576 0.00137    100
## 71 300 in all laplace   0.800 simple    PRS-max         1000.    0.644 0.00376    100
## 72 300 in all laplace   0.800 simple    PRS-max         2000.    0.727 0.00238    100
## 73 300 in all laplace   0.800 simple    PRS-max         3000.    0.768 0.00182    100
## 74 300 in all laplace   0.800 simple    PRS-max         4000.    0.797 0.00141    100
## 75 300 in all laplace   0.800 simple    PRS-max         5000.    0.813 0.00149    100
## 76 300 in all laplace   0.800 simple    PRS-stringent   1000.    0.572 0.00583    100
## 77 300 in all laplace   0.800 simple    PRS-stringent   2000.    0.677 0.00409    100
## 78 300 in all laplace   0.800 simple    PRS-stringent   3000.    0.727 0.00250    100
## 79 300 in all laplace   0.800 simple    PRS-stringent   4000.    0.758 0.00257    100
## 80 300 in all laplace   0.800 simple    PRS-stringent   5000.    0.782 0.00182    100
results35.summary <- results3.summary %>%
  filter(par.causal == "300 in all") %>%
  cbind.data.frame(n.train = 6000) %>%
  bind_rows(results5.summary)
myggplot(results35.summary, aes(n.train, AUC_mean, color = method, linetype = method)) +
  geom_hline(yintercept = 0.5, linetype = 2) +
  geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
             data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
  geom_line(size = 1.5) +
  geom_errorbar(aes(ymin = AUC_mean - 2 * AUC_boot, 
                    ymax = AUC_mean + 2 * AUC_boot), 
                size = 1.5, width = 0) +
  facet_grid(par.h2 ~ par.dist) +
  scale_x_continuous(breaks = 1:6 * 1000, minor_breaks = NULL) + 
  scale_y_continuous(minor_breaks = 0:20 / 20) +
  scale_color_manual(values = methods.color) +
  labs(x = "Size of the training set", y = "Mean of 100 AUCs", 
       color = "Method", linetype = "Method") +
  theme(legend.key.width = unit(3, "line"))

ggsave("figures/main-AUC-ntrain.pdf", scale = 1/100, width = 1050, height = 800)